#include <cstdio>
#include <algorithm>
using namespace std;
const int MAXN=1050;
int t[MAXN];
//离散化是什么：一些数字，他们的范围很大（0-1e9），但是个数不算多（1-1e5），
//并且这些数本身的数字大小不重要，重要的是这些数字之间的相对大小
void prepare(int *a,int n) {
	for(int i=0;i<n;i++){
		t[i]=a[i];
	}
    sort(t,t+n);  
	int m=unique(t,t+n)-t;//m为不重复的元素的个数  
	for(int i=0; i<n; i++){
		a[i]=lower_bound(t,t+m,a[i])-t+1; 
	}
}
int main(void){
	int a[]={5,99,746,-4,8788845,0,48799};
	prepare(a,7);
	for(int i=0;i<7;i++){
		printf("%d\n",a[i]);
	}
	printf("\n");
	//输出： 
	//3 4 5 1 7 2 6
	return 0;
}
